package com.zyz.user.listener;

import com.rabbitmq.client.Channel;
import com.zyz.common.utils.JsonUtil;
import com.zyz.common.utils.Mail;
import com.zyz.user.constant.Constant;
import com.zyz.user.dataobject.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
@Slf4j
public class UserQueueListener {
    @Autowired
    private Mail mail;
    @RabbitListener(queues = Constant.USER_QUEUE)
    public void handle(Message message, Channel channel) throws IOException {
        long deliveryTag = message.getMessageProperties().getDeliveryTag();
        try {
            // 拿到消息  进行邮件发送
            String body = new String(message.getBody());
            log.info("拿到消息 body：{}",body);
            UserInfo userInfo = JsonUtil.parseJson(body, UserInfo.class);
            // 发送邮件
            mail.sendMail(userInfo.getEmail(),"恭喜加入博客社区",buildContent(userInfo.getUserName()));

            channel.basicAck(deliveryTag, true);
        } catch (Exception e) {
            log.error("UserQueueListener 发生异常  以进行否定确认，err：{}",e.getMessage());
            channel.basicNack(deliveryTag,true,true);
        }
    }

    private String buildContent(String username) {
        StringBuilder sb = new StringBuilder();
        sb.append("尊敬的").append(username).append("，您好！").append("<br/>");
        sb.append("感谢您注册成为我们博客社区的一员！我们很高兴您加入我们的大家庭！<br/>");
        sb.append("您的注册信息如下：用户名：").append(username).append("<br/>");
        sb.append("为了确保您的帐户安全，请您妥善保管好自己的登录信息，如果使用过程中遇到任何问题，欢迎联系我们的团队3099677224@qq.com<br/>");
        sb.append("再次感谢您的加入，我们期待看到您的精彩内容！<br/>");
        sb.append("最好的祝愿<br/>").append("博客团队@ZYZ<br/>");
        return sb.toString();
    }
}
